package com.iweb.dao;

import com.iweb.entity.User;
import com.iweb.util.Pager;

import java.util.List;

/**
 * @author sheng
 * @date 2021/9/17
 * @desc
 */
public interface UserDao {

  /**
   * 查询合计有多少条记录
   *
   * @return
   */
  int selectTotalCount() throws Exception;

  /**
   * 根据查询条件，查询合计有多少条记录
   *
   * @param userName 姓名
   * @return
   * @throws Exception
   */
  int selectTotalCount(String userName) throws Exception;

  /**
   * 根据查询条件，查询合计有多少条记录
   *
   * @param user 查询参数对象
   * @return
   * @throws Exception
   */
  int selectTotalCount(User user) throws Exception;

  /**
   * 根据用户名查询用户信息
   * @param loginName
   * @return
   */
  User selectUserByLoginName(String loginName)throws Exception;


  /**
   * 根据用户名查询用户信息
   * @param id
   * @return
   */
  User selectUserById(Integer id)throws Exception;

  /**
   *查询所有用户
   * @return
   */
  List<User> selectList() throws Exception;


  /**
   * 分页查询
   *
   * @param offset 偏移量，从第几条开始
   * @param rows   每次显示多少行
   * @return
   * @throws Exception
   */
  List<User> selectPagedList(Integer offset, Integer rows) throws Exception;

  /**
   * 分页查询，带查询条件
   *
   * @param offset 偏移量，从第几条开始
   * @param rows   每次显示多少行
   * @return
   * @throws Exception
   */
  List<User> selectPagedList(Integer offset, Integer rows, String userName) throws Exception;

  /**
   * 分页查询, 带查询参数对象
   *
   * @return
   * @throws Exception
   */
  List<User> selectPagedList(Pager<User> pager) throws Exception;

  /**
   * 删除用户
   * @param id
   * @return
   */
  int delete(Integer id) throws Exception;

  /**
   * 新增用户
   * @param user
   */
  void insert(User user) throws Exception;

  /**
   * 修改用户信息
   * @param user 待修改的用户信息
   * @return
   * @throws Exception
   */
  int update(User user) throws Exception;
}
